Add support for RMA over UCP#166
Conversation
pentschev
left a comment
There was a problem hiding this comment.
In a first pass, things look like they're going in the right direction, I've left a couple of comments. It would be great if you could also add some tests.
cpp/CMakeLists.txt
Outdated
| # * compiler options ------------------------------------------------------------------------------ | ||
| rapids_find_package( | ||
| ucx REQUIRED | ||
| GLOBAL_TARGETS ucx::ucp ucx::ucs ucx::uct |
There was a problem hiding this comment.
I think such changes shouldn't be necessary, you mentioned offline they were required to build from inside another project. We'll have our CMake experts look at what would need to change here when the PR is ready for review.
cpp/include/ucxx/constructors.h
Outdated
| bool send, | ||
| void* buffer, | ||
| size_t length, | ||
| uint64_t remote_addr, | ||
| ucp_rkey_h rkey, |
There was a problem hiding this comment.
As discussed offline, the changes were made on top of an older branch before #121 was merged (on December 12), which reorganizes how data is passed to constructors and thus prevents adding several different arguments to them as is done here, we now instead have “data classes” that include all operation-specific arguments and makes the API cleaner and less error-prone (i.e., with the user accidentally swapping arguments), as you can see in the newest constructors. We will want to have this updated to the new style.
ucp_get_nbx and ucp_put_nbxc027263 to
c592ed5
Compare
Add `ucxx::MemoryHandle` and `ucxx::RemoteKey` C++ classes, wrapping UCP memory handles (`ucp_mem_h`) and remote keys (`ucp_rkey_h`), respectively. These new classes are required to provide basic support for RMA (Remote Memory Access) operations being implemented in #166 . Authors: - Peter Andreas Entschev (https://github.com/pentschev) Approvers: - Lawrence Mitchell (https://github.com/wence-) - Bradley Dice (https://github.com/bdice) - Robert Maynard (https://github.com/robertmaynard) URL: #190
|
Thanks @mdemoret-nv for working on this! |
|
/merge |
This PR adds support for RMA over UCP protocols, adding interfaces for the following functions:
ucp_get_nbx,ucp_put_nbx,ucp_ep_flush_nbxanducp_worker_flush_nbx. The implementation follows the same pattern use for allucxx::Requestoperations.Blocked waiting for #190 .